Reward.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { ShopProductItem } from "@/api/depositsApi";
  2. import clsx from "clsx";
  3. import React from "react";
  4. import styles from "./reward.module.scss";
  5. interface Props {
  6. data: ShopProductItem;
  7. }
  8. const mapKey: any = {
  9. 1: "Saldo",
  10. 2: "Bonus",
  11. 3: "Free",
  12. 4: "Replay",
  13. };
  14. const Reward: React.FC<Props> = ({ data }) => {
  15. const getSuffix = (type: 1 | 2) => {
  16. const typeMap: any = {
  17. 1: "BRL",
  18. 2: "%",
  19. };
  20. return typeMap[type];
  21. };
  22. const renderData = React.useMemo(() => {
  23. if (!!(!data?.activity_reward || !data?.activity_reward)) return [];
  24. const result: any = {};
  25. if (data?.activity_reward?.length > 0) {
  26. data?.activity_reward?.forEach((item) => {
  27. if (item?.item_id <= 0 || item?.item_id > 4) return;
  28. result[item?.item_id] = {
  29. amount: `${item?.amount}${getSuffix(item.reward)}`,
  30. reward: item?.reward,
  31. };
  32. });
  33. }
  34. if (data?.pay_reward?.length > 0) {
  35. data?.pay_reward?.forEach((item) => {
  36. if (item?.item_id <= 0 || item?.item_id > 4) return;
  37. const hasData = result[item?.item_id];
  38. let amount = "";
  39. if (hasData) {
  40. if (hasData.reward === item.reward) {
  41. amount = `${Number(parseFloat(hasData.amount)) + Number(item?.amount)}${getSuffix(item.reward)}`;
  42. } else {
  43. amount = `${hasData?.amount}+${item?.amount}${getSuffix(item.reward)}`;
  44. }
  45. } else {
  46. amount = `${item?.amount}${getSuffix(item.reward)}`;
  47. }
  48. result[item?.item_id] = {
  49. amount: amount,
  50. };
  51. });
  52. }
  53. //${typeof amount === "string" ? "" : getSuffix(item.reward)}
  54. // return result;
  55. return {
  56. ...result,
  57. };
  58. }, [data]);
  59. // D 1现金2彩金3免费币4重玩币
  60. if (Object.keys(renderData).length === 0) return <div className="h-[20px] w-[1px]"></div>;
  61. return (
  62. <div className={clsx(styles.rewardBox, "text-[.1rem] text-[#ccc]")}>
  63. {Object.keys(renderData).map((key) => {
  64. if (renderData[key] === 0) return null;
  65. return (
  66. <div key={key} className={styles.rewardItem}>
  67. <i className={clsx(styles[mapKey[key]])}></i>
  68. <div className="relative text-[#fff]">
  69. <div>{mapKey[key]}</div>
  70. <div>{renderData[key].amount}</div>
  71. </div>
  72. </div>
  73. );
  74. })}
  75. </div>
  76. );
  77. };
  78. export default Reward;